查看原文
其他

使用Unity AR Foundation在增强现实中查看模型

MIT.edu Unity官方平台 2022-05-07

本文将分享麻省理工学院的教程-使用Unity AR Foundation在增强现实中查看模型。


在本教程中,我们将介绍如何把3D模型导入Unity,并使用Android设备或iOS设备在AR中查看模型的步骤。



过去,我们往往使用Vuforia增强现实系统来实现此目的,但现在Android和iOS都默认支持图像跟踪功能,因此我们不再需要使用第三方工具包了。


Unity支持Android的ARCore和iOS的ARKit,但是还有一个更好的选择:AR Foundation。


AR Foundation是一款跨平台开发套件,支持Android和iOS的系统。AR Foundation可以帮助我们更轻松开发在不同设备上使用的应用。但在部署应用到iOS或Android设备之前,我们仍需要完成一些额外步骤。


通过学习本教程,我们将学习在增强现实中放置模型的两种设置:图像跟踪和平面跟踪。


图像跟踪允许我们指定放置模型的目标图像。我们将打印出目标图像,应用程序将查找和放置模型到该图像上。


图像跟踪模式


平面跟踪模式下,我们将模型放置到现实平面中。我们可以在该模式下缩放和旋转模型。


平面跟踪模式

学习准备

首先,我们必须安装必要的软件及工具。


1、请下载并安装Unity Hub,此时会需要创建Unity用户账号。



2、启动Unity Hub,依次点击Install > Add,从列表选择Unity 2019.1.7f1版本。请不要安装结尾带有“a”或“b”的预览版本,因为我们无法确保它们的兼容性。



3、在安装界面勾选Android Build Support或iOS Build Support


对于Android系统,要点开Android Build Support旁边的小箭头,勾选Android SDK and NDK Tools选项,这样可以跳过下一步。



4、Android系统的可选步骤:下载并安装Android Studio如有必要,我们会使用Android Studio下载最新版Android SDK。


我们建议使用Unity安装Android SDK和NDK,过程将更简单。安装Android Studio可以在电脑上提供Android开发环境,方便实现高级用例。


下载Android Studio:

https://developer.android.com/studio


5、对于iOS系统,请访问App Store下载最新版XCode


设置Unity项目

本教程将使用Unity AR Foundation示例项目中的两个示例场景。使用模板可以简化编辑操作,从而快速在场景放置和查看模型。

 

1、我们访问GitHub下载模版文件,下载完成后进行解压。


下载模版文件:

https://github.com/virtualxdesign/artemplate


2、启动Unity Hub,点击“Projects > ADD”选择解压的文件夹位置,将项目添加到Projects列表。在下拉菜单选择Unity版本,然后双击打开项目


请注意,建议电脑安装的Unity版本和项目模版中使用版本一致,即Unity 2019.1.7f1。如果没有Unity 2019.1.7f1的版本,我们将在项目下方看到橙色的感叹号符号,只要使用的是更新的版本,所有功能都会正常工作。


为项目选择正确的Unity版本,打开项目


3、现在项目窗口打开了,项目中的AR Foundation应该已经是启用状态,如果没有启用的话,我们可以手动启用 


请点击“Window > Package Manager”,打开资源包管理器窗口。该窗口显示Unity项目的所有可用扩展资源包。我们将看到AR Foundation、ARCore XR Plugin、ARKit Face Tracking和ARKit XR插件已经安装。


这些资源包名称旁边可能会有一个向下的箭头,表示有更新的版本可以使用,但请不要进行更新。如果已经有下面版本号的资源包,表示所有内容都已设置完成。


如果这些资源包没有安装好,请单击选择这些资源包,并从下拉列表选择以下版本,然后单击进行安装。

  • AR Foundation -> preview.3 - 2.1.0

  • ARCore XR Plugin -> preview.5 - 2.1.0

  • ARKit XR Plugin -> preview.5 - 2.1.0

  • ARKit Face Tracking -> preview.6 - 1.0.0


打开 Package Manager,确保已安装需要的资源包


4、将构建目标切换为Android或iOS。选择“File > Build Settings”,我们将为构建版本选择正确的环境。


从左侧列表中,选择Android或iOS,此时可以在底部看到“Switch Platform”按钮,单击该按钮。转换项目到对应平台需要一些时间,此时不要关闭该窗口。


单击左下角的“Player Settings”,将打开带有平台专用设置的窗口。模板应该已经有正确的设置,但我们仍要改变项目的资源包名称。


选择目标平台,然后单击“Switch Platform”,最后单击左下角的“Player Settings”


5、在Player Settings中,找到Identification部分。 我们可以修改资源包名称,名称的格式应该为“com.packagename.projectname”,


例如:模板设置的名称为com.virtualxdesign.artemplate,将其修改为com.virtualxdesign.yourprojectname,这将让应用拥有唯一的标识符。


修改资源包名称为com.virtualxdesign.yourproject


现在查看Unity项目文件。在打开场景时,如下图所示。


左侧是层级窗口,我们将使用该窗口把模型放置到场景中。我们可以把对象放到其它对象之中,当对象中包含子对象时,对象名称旁边会出现一个小箭头。


中间的视图是3D场景视图,我们可以在这个窗口中选择、移动、旋转和缩放对象。在图像跟踪示例中,我们不会使用该窗口。


右侧是检视窗口,我们可以在此查看和编辑游戏对象的细节。底部是项目窗口目录,这里列出了所有项目文件,我们会把模型文件放置到此处。



6、打开图像跟踪示例。项目窗口中,打开“Scenes/ImageTracking/ImageTracking.Unity”。我们可以在该场景放置模型到目标图像上,例如:放到明信片或海报上。



我们使用默认设置在该场景测试了我们的设置内容。你不必修改任何内容,我们会构建应用,然后传输到设备,查看应用是否可以运行。此时,除了平台专用部分,所有内容都应该准备就绪。


下面,我们将介绍在Android设备和iOS设备上运行的准备步骤,请根据自己的设备执行相应的步骤。


构建过程(iOS)

为iOS系统构建Unity项目会有一些略微复杂的步骤,请参考Unity官方教程《构建为在iOS设备上进行测试的Unity项目》学习在iOS中构建和测试你的应用。


阅读Unity官方教程《构建为在iOS设备上进行测试的Unity项目》:

https://learn.unity.com/tutorial/building-for-mobile#


我们需要准备的内容:

  • 安装iOS 11或更高版本系统的iOS设备

  • 最新版XCode

  • Apple账号


温馨提示:由于本文教程使用了示例应用及模版,所以请忽略Unity官方教程中“Setting up the Simple Mobile Placeholder project”和“Preparing your Unity project for building to iOS”两部分的内容。


按照官方教程完成设置后,应用将会成功安装到设备上。启动应用,将摄像头对准“ImageTracking>Images”目录下的图像,我们将会看到,模板里的模型城堡出现在图像上。


我们可以从“Scenes/PlaneTracking.Unity”中打开平面跟踪示例项目,构建并运行该项目。当运行用时,我们围绕水平面移动摄像头,此时将出现一个网格。 在网格上单击,模型会出现在网格上。我们可以使用滑块对模型进行移动,缩放和旋转。


构建过程(Android)

向Android系统构建项目时,我们需要的Android设备至少要安装Android 7.0版本。


1、请在Android设备上启用开发者模式


在设备上打开“Settings> About Phone”(设置 > 关于手机),找到“Build Number”(版本号)。点按7次版本号,将提示已经进入开发者模式,这样我们可以在手机上启用“Developer Options”(开发者选项)。


2、启用开发人员模式后,我们转到点击“Settings > System > Advanced > Developer Options“(设置 > 系统 > 高级 > 开发者选项),访问Developer Options”(开发者选项)根据设备不同,开发者选项的位置可能有所区别。如果无法找到设备的开发者选项,请在网络上搜索相关信息。


3、在开发者选项中,找到并启用“USB Debugging”(USB调试),这将允许我们从Unity把应用传输到Android设备。


4、我们将Android设备连接到电脑。我们的设备应该会提示“Trust this computer”(信任此电脑),点击“Always Trust”(总是信任),然后确认。如果不选择信任此电脑,电脑将无法把应用传输到手机上。


5、现在我们已经准备好构建应用。打开“Build Settings”构建设置,找到“Run Device”设置,单击“Refresh”按钮。在下拉列表中,找到并选中设备名称,这将使设备成为构建目标。


6、单击“Build and Run”(生成并运行)。Unity会请求在处理前把应用保存在电脑上。使用默认位置即可。命名应用的名称,然后保存,就开始构建过程了。


7、现在应用应已加载到手机上并且自动启动。我们把手机摄像头对准“Scenes/ImageTracking/Images”文件夹下的一幅图像,可以看到图像上出现了城堡模型。


8、我们可以从“Scenes/PlaneTracking.Unity”中打开平面跟踪示例场景。构建并运行应用。我们围绕水平面移动摄像头,此时将出现一个网格。 在网格上单击,模型会出现在网格上。我们可以使用滑块对模型进行移动,缩放和旋转。


在启动应用后,打开并设备对准目标图像,此时城堡模型应该会出现在目标上


导入和准备3D模型

我们可以使用摄影制图法获得OBJ文件或FBX文件,在导出模型时,我们应该把轴心点设为(0,0,0),把上方向设为Y轴。这样在3D建模软件中进行模型准备,比在之后导入Unity再进行设置要方便得多。如果模型的轴心点或朝向设置不正确,我们需要在Unity中进行调整。


3D摄影制图法模型有逼真的纹理和自然的环境光照。因此,我们不要对它们应用额外的光照,而是使用Unlit材质。请按照下列步骤,导入和应用Unlit着色器。


1、我们将OBJ,MTL和JPG文件拖入Unity的项目窗口目录中。我们可以在3DModels文件夹下创建新文件夹,把模型文件放到该文件夹中。


将文件拖放到Unity项目窗口


2、单击OBJ文件,在检视窗口中,单击“Extract Materials”(提取材质),使用已选中的文件夹,这样可让Unity在同一目录下生成可以编辑的材质资源



3.、单击新建的材质资源。在检视窗口中,单击“Shader”下拉菜单,输入“Unlit”,单击选择“Unlit (Mobile/Unlit) shader”。



4、现在,我们要将模型放入模板场景中。为了方便正确地放置和缩放模型,我们提供了模板预制件


在项目窗口中,打开3DModels文件夹,里面一个名为TrackedModel.prefab预制件,双击打开该预制件。



5、TrackedModel预制件已经放入图像跟踪和平面跟踪的示例场景中。在修改该预制件时,两个示例场景都会进行更新。因此,我们只需要把模型放到该预制件中即可。


6、把模型拖到该预制件中,请把模型添加为TrackedModel预制件的子对象



7、此时,我们在同一预制件中有城堡参考模型和自己的模型。我们需要确保自己的模型有正确的位置和朝向。在放置自己的模型时,请使用城堡模型作为参考。



8、我们将自己的模型放到Tracked Model预制件之下,我们可能会不小心把它错放到Castle子对象下。


如果发生这种情况,模型可能会使用错误的缩放,位置和角度参数,从而完全离开屏幕外。我们可以使用检视窗口和3D工具来找到模型,把它移动到原来的位置


在编辑Transform组件时,请确保选中的是自己的模型,而不是TrackedModel预制件。如果移动或缩放TrackedModel预制件会破坏示例场景。在单击TrackedModel即根对象时,我们会看到下图上的参数。



9、移动,缩放和旋转模型,使模型处在城堡模型中间。它们应该在底部对齐。最后删除城堡模型,单击返回箭头返回主场景。



10、我们的模型已经准备好了。现在可以打开示例场景,单击“Build and Run”来体验自己的应用。


使用图像跟踪模板

我们提供了一组图像目标的示例文件,你也可以创建和使用自己的图像目标。


1、找到合适的目标图像。通常我们应该使用带有鲜明特征的复杂图像,而带有少量或重复特征的图像并不适合使用。


2、在项目窗口中,打开“Scenes/ImageTraking/Images”文件夹,把格式为.jpg或.png的目标图像文件拖到该目录中。


3、单击“ReferenceImagesLibrary.asset”,在检视窗口中,我们会看到一组图像添加到目标图像列表。该列表中的所有图像都可以在运行时捕捉到,在列表下单击“Add Image”。


4、我们添加新的参考图像,将自己的图像拖到新的参考图像上,它会把图像添加到该列表中。


5、在“Specify Size”部分下,输入目标图像在现实世界中的大小,以米为单位。


给目标图像列表添加新图像


现在大功告成 !构建Image Tracking示例场景时,我们将看到应用能够识别目标图像,并在图像上方放置模型,我们也可以尝试不同的图像和大小。


使用平面检测模板

我们也可以使用Plane Tracking平面跟踪示例场景。平面跟踪示例场景拥有UI,你可以将模型放置到任何水平面上,并且使用滑块移动,缩放和旋转模型。

 

在项目窗口中,打开Scenes文件夹。点击Plane Tracking,所有内容应该都已经设置好了。根据Android设备或iOS设备特定步骤,构建并运行应用。


别忘了点按平面来放置模型。在手机识别到平面时,我们会看到平面上出现网格。我们可以把模型放到识别到的网格上。


小结

麻省理工学院的教程《使用Unity AR Foundation在增强现实中查看模型》为大家介绍到这里,对AR感兴趣的开发者,赶紧按照教程中的内容,动手进行操作吧。


下载Unity Connect APP,请点击此处 观看部分Unity官方视频,请关注B站帐户:Unity官方


你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:

Connect.unity.com/g/discussion


推荐阅读

摄影制图法工作流程指南

AR Foundation已支持LWRP 4.8.0-preview

Unity的移动端AR生态系统:AR Foundation,ARCore和ARKit

使用AR Foundation制作圣诞AR小游戏

《帕斯卡契约》2019苹果秋季发布会大放异彩

使用Unity Accelerator加快团队协作开发

使用Unity开发沙盒游戏《The Serpent Rogue》

高级动画绑定功能:角色与物品的交互



喜欢本文,请点“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存